// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const openid = wxContext.OPENID

  try {
    // 首先验证订单是否属于当前用户
    let orderRes;

    // 判断传入的是自定义orderId还是数据库_id
    if (event.orderId.startsWith('OD')) {
      // 使用自定义orderId查询
      console.log('使用自定义orderId查询:', event.orderId);
      orderRes = await db.collection('orders')
        .where({
          orderId: event.orderId,
          openid: openid
        })
        .get();
    } else {
      // 使用数据库_id查询
      console.log('使用数据库_id查询:', event.orderId);
      orderRes = await db.collection('orders')
        .where({
          _id: event.orderId,
          openid: openid
        })
        .get();
    }

    if (orderRes.data.length === 0) {
      return {
        success: false,
        message: '订单不存在或无权限操作'
      }
    }

    // 获取实际的数据库_id
    const dbId = orderRes.data[0]._id;

    // 准备更新数据
    let updateData = {
      status: event.status
    }

    // 如果是支付完成，记录支付时间
    if (event.status === 'paid') {
      updateData.payTime = db.serverDate()
    }

    // 如果是完成订单，记录完成时间
    if (event.status === 'completed') {
      updateData.completeTime = db.serverDate()
    }

    // 更新订单状态
    await db.collection('orders').doc(dbId).update({
      data: updateData
    })

    return {
      success: true,
      message: '订单状态更新成功'
    }
  } catch (error) {
    console.error(error)
    return {
      success: false,
      error: error
    }
  }
} 